package main

import "fmt"

type Vroer interface {
	SayHi()
	Sayana()
}

type Stu1 struct {
	name string
	id   int
}

func (tmp *Stu1) SayHi() {
	fmt.Printf("Student [%s,%d] sayhi\n", tmp.name, tmp.id)
}

func (tmp *Stu1) Sayana() {
	fmt.Println("せやなー")
}

type Tea struct {
	addr  string
	group string
}

func (tmp *Tea) SayHi() {
	fmt.Printf("Student [%s,%s] sayhi\n", tmp.addr, tmp.group)
}

func (tmp *Tea) Sayana() {
	fmt.Println("そうだよー")
}

func main() {
	var i Vroer

	s := &Stu1{"akane", 17}
	i = s
	i.Sayana()

	t := &Tea{"tyo", "AHS 本社"}
	i = t
	i.Sayana()

}
